package br.com.eduquiz.session;

import br.com.eduquiz.entity.*;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;

import java.util.Arrays;

@Name("questionarioList")
public class QuestionarioList extends EntityQuery<Questionario> {
	
	private static final long serialVersionUID = 3458290932349786893L;

	private static final String EJBQL = "select questionario from Questionario questionario";

	private static final String[] RESTRICTIONS = {
		"lower(questionario.nome) like lower(concat('%',#{questionarioList.questionario.nome},'%'))",
		"lower(questionario.descricao) like lower(concat('%',#{questionarioList.questionario.descricao},'%'))",
		"questionario.nivel = #{questionarioList.questionario.nivel}",
		"questionario.categoria.usuario.subGrupo.id = #{questionarioList.subgrupo.id}",
		"questionario.categoria.usuario.subGrupo.grupo.id = #{questionarioList.grupo.id}",
		"questionario.categoria.usuario.subGrupo.grupo.administradorGrupo.id = #{questionarioList.administradorGrupo.id}",
	};

	private Questionario questionario = new Questionario();
	
	@In(required=false)
	private SubGrupo subgrupo;
	
	@In(required=false)
	private Grupo grupo;
	
	@In(required=false)
	private AdministradorGrupo administradorGrupo;

	public QuestionarioList() {
		setEjbql(EJBQL);
		setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
		setMaxResults(25);
	}

	public Questionario getQuestionario() {
		return questionario;
	}

	public SubGrupo getSubgrupo() {
		return subgrupo;
	}

	public void setSubgrupo(SubGrupo subgrupo) {
		this.subgrupo = subgrupo;
	}

	public Grupo getGrupo() {
		return grupo;
	}

	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}

	public AdministradorGrupo getAdministradorGrupo() {
		return administradorGrupo;
	}

	public void setAdministradorGrupo(AdministradorGrupo administradorGrupo) {
		this.administradorGrupo = administradorGrupo;
	}
}
